package cn.kdyzm.twofa.service;

import com.google.zxing.WriterException;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

/**
 * @author kdyzm
 * @date 2025/6/16
 */
public interface ITwoFaService {

    /**
     * 该方法一般用不到
     *
     * @return 生成key
     */
    String generateSecretKey();

    /**
     * 获取图片二维码Url图片链接
     *
     * @param userName 用户名
     */
    String generateOptAuthUrl(String userName);

    /**
     * 生成图片二维码二进制流
     *
     * @param userName 用户名
     */
    ByteArrayOutputStream generateOptAuthPicByteArray(String userName) throws WriterException, IOException;

    /**
     * 验证动态验证码是否正确
     *
     * @param userName 用户名
     * @param code     动态验证码
     */
    Boolean checkCode(String userName, Integer code);

    /**
     * 在首次设置时调用
     *
     * @param userId
     * @param code
     * @return
     */
    String checkFirstCode(Long userId, Integer code);
}
